package com.miao.staticProxy;


/**
* Description:买火车票的代理（给人代理排队买票） 具体实现
* Author: Miao@ShaoQing
* Data: 16:56 2021/7/5
*/
public class BuyTicketProxyImpl implements BuyTicketProxy {

    //把被代理的对象，作为自己的一个属性
    private BuyTrainTicket buyTrainTicket;

    public BuyTicketProxyImpl(BuyTrainTicket buyTrainTicket) {
        this.buyTrainTicket = buyTrainTicket;
    }

    //代理对象完成 扩展的功能： 早上早起
    private void getUpEarly(){
        System.out.println("早上早起。。。");
    }

    //代理对象完成 扩展的功能： 打车去火车站
    private void gotoTrainStation(){
        System.out.println("打车去火车站。。。");
    }

    //代理对象完成 扩展的功能： 排队
    private  void waitInLine(){
        System.out.println("排队等候中。。。");
    }

    //代理对象完成 扩展的功能： 打车返回
    private  void goBack(){
        System.out.println("打车返回。。。");
    }

    @Override
    public void buyTicket() {

        this.getUpEarly();
        this.gotoTrainStation();
        this.waitInLine();
        //执行代理的功能
        buyTrainTicket.buyOneTrainTicket();
        this.goBack();
    }
}
